package com.yuw.dz;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class TestDriver03 {
    public static void main(String[] args) {
        // 排序
        test03();
    }

    /**
     * Collections-集合工具类
     */
    private static void test03() {
        // 创建一个List对象
        List<Monitor> list = new ArrayList<>();
        // 向集合中添加元素
        list.add(new Monitor("zhangsan", 80));
        list.add(new Monitor("lisi", 75));
        list.add(new Monitor("wangwu", 90));
        list.add(new Monitor("zhaoliu", 85));
        //list.add(null); // sort方法不能对null元素进行排序处理
        System.out.println("排序之前的List对象：");
        printList(list);
        // 使用集合工具类进行排序,提供Comparator比较器
        Collections.sort(list, new Comparator<Monitor>() {
            @Override
            public int compare(Monitor m1, Monitor m2) {
                // 要求根据排序比较的业务逻辑返回三种值 -1 0 1
                if (m1 == null && m2 == null) {
                    // 相等
                    return 0;
                }
                if (m1 != null && m2 == null) {
                    return 1;
                }
                if (m1 == null && m2 != null) {
                    return -1;
                }

                int i = 0; // 根据业务初始化
                // 大于
                if (m1.getStuScore() > m2.getStuScore()) {
                    // this表示当前对象  stu表示比较的对象
                    // 大于
                    i = 1;
                } else if (m1.getStuScore() < m2.getStuScore()) {
                    // 小于
                    i = -1;
                } else {
                    // 等于
                    i = 0;
                }
                // 返回比较结果的三种值
                return i;
            }
        });
        // 打印
        System.out.println("排序之后的List对象：");
        printList(list);

    }

    /**
     * Collections-集合工具类
     */
    private static void test02() {
        // 创建一个List对象
        List<Student> list = new ArrayList<>();
        // 向集合中添加元素
        list.add(new Student("zhangsan", 80));
        list.add(new Student("lisi", 75));
        list.add(new Student("wangwu", 90));
        list.add(new Student("zhaoliu", 85));
        //list.add(null); // sort方法不能对null元素进行排序处理
        System.out.println("排序之前的List对象：");
        printList(list);
        // 使用集合工具类进行排序
        Collections.sort(list);
        // 打印
        System.out.println("排序之后的List对象：");
        printList(list);

    }

    /**
     * Collections-集合工具类
     */
    private static void test01() {
        // 创建一个List对象
        List<String> list = new ArrayList<>();
        // 向集合中添加元素
        list.add("zhangsan");
        list.add("lisi");
        list.add("lisi");
        list.add("wangwu");
        list.add("zhaoliu");
        //list.add(null); // sort方法不能对null元素进行排序处理
        System.out.println("排序之前的List对象：");
        printList(list);
        // 使用集合工具类进行排序
        Collections.sort(list);
        // 打印
        System.out.println("排序之后的List对象：");
        printList(list);

    }

    /**
     * 打印List元素内容
     *
     * @param list 被打印的List
     */
    private static void printList(List list) {
        // 判断是否为null
        if (list != null) {
            // 打印list的每个元素
            for (Object obj : list) {
                System.out.println("   " + obj);
            }
            // 换行
            System.out.println();
        }
    }
}
